const express = require('express')
const router = express.Router()

const cateHandle = require('../router_handle/cate')
// 导入解析 formdata 格式表单数据的包
const multer = require('multer')
// 导入路径核心模块
const path = require('path')
// 创建 multer 的实例对象，通过 dest 属性指定文件的存放路径
const upload = multer({ dest: path.join(__dirname, '../uploads') })

// 导入验证数据的中间件
const expressJoi = require('@escook/express-joi')
// 导入文章分类的验证模块
const { cate_schema } = require('../schema/articleCate')
// 导入删除分类的验证规则对象
const { delete_cate_schema } = require('../schema/articleCate')
// 导入根据 Id 获取分类的验证规则对象
const { get_cate_schema } = require('../schema/articleCate')
// 导入更新文章分类的验证规则对象
const { update_cate_schema } = require('../schema/articleCate')
// 导入文章的验证模块
const { add_article_schema } = require('../schema/article')

router.get('/cates', cateHandle.getArticleCate)

// 新增文章分类的路由
router.post('/addcates', expressJoi(cate_schema), cateHandle.addArticleCates)
// 删除文章分类的路由
router.get('/deletecate/:id', expressJoi(delete_cate_schema), cateHandle.deleteCateById)
router.get('/cates/:id', expressJoi(get_cate_schema), cateHandle.getArticleById)
// 更新文章分类的路由
router.post('/updatecate', expressJoi(update_cate_schema), cateHandle.updateCateById)
// upload.single() 是一个局部生效的中间件，用来解析 FormData 格式的表单数据
// 文件类型的数据会解析并挂载到 req.file 属性中
// 文本类型的数据会解析并挂载到 req.body 属性中
router.post('/add', upload.single('cover_img'), expressJoi(add_article_schema), cateHandle.addArticle)

module.exports = router